home *** CD-ROM | disk | FTP | other *** search
/ 100 Plus Great Games 2 / 100PLUSV2.BIN / games / SeaInvaders.dxr / 00007_Monster Scripts.ls < prev    next >
Encoding:
Text File  |  2002-01-25  |  5.5 KB  |  171 lines

  1. global enemyData, enemySO, maxEnemies, fallSpeed
  2.  
  3. on initializeEnemies
  4.   enemyData = []
  5.   repeat with wEnemy = 1 to maxEnemies
  6.     wSprite = enemySO + wEnemy
  7.     add(enemyData, [0, 0, point(random(5800), 0), 0, [point(random(70) - 25, random(50) + 10)]])
  8.     set the loc of sprite wSprite to point(-50, -50)
  9.   end repeat
  10. end
  11.  
  12. on addEnemy spawnType, spawnloc, spawnDrift
  13.   validSlot = 0
  14.   repeat with wSlot = 1 to count(enemyData)
  15.     if (enemyData[wSlot][1] = 0) and (validSlot = 0) then
  16.       validSlot = wSlot
  17.     end if
  18.   end repeat
  19.   if validSlot <> 0 then
  20.     wSprite = enemySO + validSlot
  21.     waitDelay = [100, random(200), 80, random(150), 50, random(100)][spawnType]
  22.     enemyData[validSlot] = [1, spawnType, spawnloc, [spawnDrift], 0, 30 + random(180), 0, 0]
  23.     set the member of sprite wSprite to ["Crab1", "Fish1", "Jellyfish1", "Starfish", "Anchor", "fishBone"][spawnType]
  24.     sprite(wSprite).rotation = 0
  25.   end if
  26. end
  27.  
  28. on moveEnemies
  29.   global totalEnemies, playerScore, animoffset, playerInvincible
  30.   totalEnemies = 0
  31.   animoffset = animoffset + 1
  32.   if animoffset > 999 then
  33.     animoffset = 0
  34.   end if
  35.   repeat with wEnemy = 1 to count(enemyData)
  36.     wSprite = enemySO + wEnemy
  37.     animValue = (animoffset + wEnemy) mod 10
  38.     if enemyData[wEnemy][1] = 1 then
  39.       if enemyData[wEnemy][5] > 0 then
  40.         playerScore = playerScore + 25 + (enemyData[wEnemy][2] * 25)
  41.         member("Score Display").text = string(playerScore)
  42.         enemyData[wEnemy][3][2] = -250
  43.         enemyData[wEnemy][1] = 0
  44.         playSound("Hit Enemy", 2)
  45.       else
  46.         momentum = enemyData[wEnemy][4][1]
  47.         bulletState = 0
  48.         case enemyData[wEnemy][2] of
  49.           1:
  50.             mSpeed = 20
  51.             fSpeed = 12
  52.             maxDepth = 3500
  53.             minDepth = 2750
  54.             totalEnemies = totalEnemies + 1
  55.             monsterName = "Crab"
  56.           2:
  57.             mSpeed = 15
  58.             fSpeed = 15
  59.             maxDepth = 3000
  60.             minDepth = 500
  61.             totalEnemies = totalEnemies + 1
  62.             monsterName = "Fish"
  63.           3:
  64.             mSpeed = 20
  65.             fSpeed = 15
  66.             maxDepth = 2600
  67.             minDepth = 400
  68.             totalEnemies = totalEnemies + 1
  69.             monsterName = "jellyfish"
  70.           4:
  71.             mSpeed = 20
  72.             fSpeed = 15
  73.             maxDepth = 3700
  74.             minDepth = 0
  75.             bulletState = 1
  76.             monsterName = "Starfish"
  77.           5:
  78.             mSpeed = 20
  79.             fSpeed = 15
  80.             maxDepth = 3700
  81.             minDepth = 0
  82.             bulletState = 1
  83.             monsterName = "Anchor"
  84.           6:
  85.             mSpeed = 20
  86.             fSpeed = 15
  87.             maxDepth = 3700
  88.             minDepth = 0
  89.             bulletState = 1
  90.             monsterName = "Fishbone"
  91.         end case
  92.         if bulletState = 1 then
  93.           if enemyData[wEnemy][3][2] > maxDepth then
  94.             repeat with wEffect = 1 to 10
  95.               addparticle(enemyData[wEnemy][3], 0, 3)
  96.             end repeat
  97.             enemyData[wEnemy][1] = 0
  98.             set the loc of sprite wSprite to point(-50, -50)
  99.           else
  100.             enemyData[wEnemy][3] = enemyData[wEnemy][3] + momentum
  101.             enemyData[wEnemy][7] = enemyData[wEnemy][7] + 5
  102.             sprite(wSprite).rotation = enemyData[wEnemy][7]
  103.           end if
  104.         else
  105.           if enemyData[wEnemy][6] > 0 then
  106.             enemyData[wEnemy][6] = enemyData[wEnemy][6] - 1
  107.           else
  108.             enemyData[wEnemy][6] = 30 + random(100)
  109.             mAim = 135 + random(90)
  110.             locY = cos(mAim * PI / 180) * -60
  111.             locX = sin(mAim * PI / 180) * 60
  112.             addEnemy(enemyData[wEnemy][2] + 3, enemyData[wEnemy][3], point(locX, locY))
  113.             enemyData[wEnemy][8] = 20
  114.             memName = monsterName & " Shoot"
  115.             set the member of sprite wSprite to memName
  116.             playSound("Enemy Throw", 1)
  117.           end if
  118.           if enemyData[wEnemy][3][1] > 5400 then
  119.             momentum[1] = momentum[1] - 1
  120.           else
  121.             if enemyData[wEnemy][3][1] < 400 then
  122.               momentum[1] = momentum[1] + 1
  123.             end if
  124.           end if
  125.           if enemyData[wEnemy][3][2] > maxDepth then
  126.             momentum[2] = momentum[2] - 1
  127.           else
  128.             if enemyData[wEnemy][3][2] < minDepth then
  129.               momentum[2] = momentum[2] + 1
  130.             end if
  131.           end if
  132.           if momentum[1] > mSpeed then
  133.             momentum[1] = mSpeed
  134.           end if
  135.           if momentum[1] < (0 - mSpeed) then
  136.             momentum[1] = 0 - mSpeed
  137.           end if
  138.           if momentum[2] > fSpeed then
  139.             momentum[2] = fSpeed
  140.           end if
  141.           if momentum[2] < (0 - fSpeed) then
  142.             momentum[2] = 0 - fSpeed
  143.           end if
  144.           enemyData[wEnemy][3] = enemyData[wEnemy][3] + momentum
  145.           enemyData[wEnemy][4][1] = momentum
  146.         end if
  147.         if enemyData[wEnemy][8] > 0 then
  148.           enemyData[wEnemy][8] = enemyData[wEnemy][8] - 1
  149.           if enemyData[wEnemy][8] = 0 then
  150.           else
  151.           end if
  152.         else
  153.           if bulletState = 0 then
  154.             if animValue <= 5 then
  155.               memName = monsterName & "1"
  156.             else
  157.               memName = monsterName & "2"
  158.             end if
  159.           else
  160.             memName = monsterName
  161.           end if
  162.           set the member of sprite wSprite to memName
  163.         end if
  164.         set the loc of sprite wSprite to enemyData[wEnemy][3] / 10
  165.       end if
  166.       next repeat
  167.     end if
  168.     set the loc of sprite wSprite to point(-50, -50)
  169.   end repeat
  170. end
  171.